function uuid() {
  var i, random;
  var uuid = '';

  for (i = 0; i < 32; i++) {
    random = Math.random() * 16 | 0;
    if (i === 8 || i === 12 || i === 16 || i === 20) {
      uuid += '-';
    }
    uuid += (i === 12 ? 4 : (i === 16 ? ((random & 3) | 8) : random))
      .toString(16);
  }

  return uuid;
}

function pluralize(count: number, word: string) {
  return count === 1 ? word : word + 's';
}

function store(namespace: string, data?: any) {
  if (data) {
    return localStorage.setItem(namespace, JSON.stringify(data));
  }

  var store = localStorage.getItem(namespace);
  return (store && JSON.parse(store)) || [];
}

function extend(...objs: any[]): any {
  let newObj: {[key: string]: any} = {};
  for (let i = 0; i < objs.length; i++) {
    let obj = objs[i];
    for (var key in obj) {
      if (obj.hasOwnProperty(key)) {
        newObj[key] = obj[key];
      }
    }
  }
  return newObj;
}

export {
  uuid,
  pluralize,
  store,
  extend
}